home *** CD-ROM | disk | FTP | other *** search
/ Windows News 2010 October/November / WNhs48_oct-nov2010.iso / Onglet4 / Advanced SystemCare Free / asc-setup.exe / {tmp} / IObitToolbarSetup.exe / content / toolbar.js < prev   
Text File  |  2010-05-04  |  11KB  |  393 lines

  1. var _i0Members={                                        
  2. m_xeventRecord: [],
  3. m_recordId:     1,
  4. objRecord: function(objMozilla, objDispatch ,recordId){
  5. this.m_objMozilla  = objMozilla;
  6. this.m_objDispatch = objDispatch;
  7. this.m_recordId    = recordId;    
  8. },
  9.  
  10. DoBrowserNavigate: function(uri)
  11. {
  12.     try
  13.     {
  14.         var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"].getService(Components.interfaces.nsIWindowWatcher);
  15.         var w = ww.activeWindow;
  16.         w.loadURI(uri);
  17.     }
  18.     catch (e)
  19.     {
  20.             try { openUILink(uri, null); }
  21.             catch (ee) {}
  22.     }
  23. },
  24.  
  25. StateChangeEvent: function(aWebProgress, aRequest, aStateFlags, aStatus)
  26. {
  27.     this.m_aWebProgress = aWebProgress;
  28.     this.m_aRequest = aRequest;
  29.     this.m_aStateFlags = aStateFlags;
  30.     this.m_aStatus = aStatus;
  31. },
  32.  
  33. Generic_ProgressListener: function(objDispatch, mask, flags)
  34. {
  35.     this.objDispatch = objDispatch;
  36.     this.stateFlags = flags;
  37.     this.mask = mask;
  38.     this.inStateChange = false;
  39.     this.isGlobal = false;
  40.  
  41.     this.QueryInterface = function(aIID)
  42.     {
  43.         try
  44.         {
  45.             if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
  46.                 aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
  47.                 aIID.equals(Components.interfaces.nsISupports))
  48.             {
  49.                 return this;
  50.             }
  51.         }
  52.         catch (e)
  53.         {
  54.         }
  55.         throw Components.results.NS_NOINTERFACE;
  56.     };
  57.  
  58.     this.onProgressChange = function(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress) { return 0; };
  59.     this.onStatusChange = function(aWebProgress, aRequest, aStatus, aMessage) { return 0; };
  60.     this.onSecurityChange = function(aWebProgress, aRequest, aState) { return 0; };
  61.     this.onLinkIconAvailable = function(a) { return 0; };
  62.     this.onLocationChange = function(aProgress, aRequest, aLocation) { return 0; };
  63.     
  64.     this.onStateChange = function(aWebProgress, aRequest, aStateFlags, aStatus)
  65.     {
  66.         if (this.inStateChange || this.objDispatch == null)
  67.             return 0;
  68.  
  69.         this.inStateChange = true;
  70.         try
  71.         {
  72.             var members = _i0Members;                                    
  73.             if (aStateFlags & this.stateFlags)
  74.             {
  75.                 var evt = new members.StateChangeEvent (aWebProgress, aRequest, aStateFlags, aStatus);
  76.                 this.objDispatch.ProcessEvent(evt);
  77.             }
  78.  
  79.             if (this.isGlobal && window.parent.gBrowser != null)
  80.             {
  81.                 window.setTimeout(members.ReplaceGlobalProgressCallback, 0, this);
  82.                 this.isGlobal = false;
  83.             }
  84.         }
  85.         catch (e)
  86.         {
  87.         }
  88.         finally
  89.         {
  90.             this.inStateChange = false;
  91.         }
  92.         return 0;
  93.     };
  94. },
  95.  
  96. m_progressCallbacks: new Array(),
  97.  
  98. AddProgressCallback: function(objDispatch, mask, flags)
  99. {
  100.     try
  101.     {
  102.         var members = _i0Members;                                    
  103.         var listener = new members.Generic_ProgressListener(objDispatch, mask, flags);
  104.         var webProgress = window.parent.gBrowser;
  105.         if (webProgress == null)   // FF 2
  106.         {
  107.             listener.isGlobal = true;
  108.             webProgress = Components.classes["@mozilla.org/docloaderservice;1"].getService(Components.interfaces.nsIWebProgress);
  109.         }
  110.         webProgress.addProgressListener(listener, mask);
  111.         members.m_progressCallbacks[listener] = webProgress;
  112.         return true;
  113.     }
  114.     catch (e)
  115.     {
  116.     }
  117.     return false;
  118. },
  119.  
  120. ReplaceGlobalProgressCallback: function(listener)
  121. {
  122.     try
  123.     {
  124.         if (window.parent.gBrowser == null || listener == null)
  125.             return;
  126.         
  127.         var members = _i0Members;                                    
  128.         var globalWebProgress = members.m_progressCallbacks[listener];
  129.         globalWebProgress.removeProgressListener(listener, listener.mask);
  130.         window.parent.gBrowser.addProgressListener(listener, listener.mask);
  131.         members.m_progressCallbacks[listener] = window.parent.gBrowser;
  132.     }
  133.     catch (e)
  134.     {
  135.     }
  136. },
  137.  
  138. RemoveProgressCallback: function(listener)
  139. {
  140.     if (listener == null)
  141.         return;
  142.  
  143.     try
  144.     {
  145.         var members = _i0Members;                                    
  146.         var webProgress = members.m_progressCallbacks[listener];
  147.         if (webProgress != null)
  148.             webProgress.removeProgressListener(listener, listener.mask);
  149.         members.m_progressCallbacks[listener] = null;
  150.     }
  151.     catch (e)
  152.     {
  153.     }
  154. },
  155.  
  156. RemoveProgressCallbacks: function()
  157. {
  158.     try
  159.     {
  160.         var members = _i0Members;                                    
  161.         for (listener in members.m_progressCallbacks)
  162.         {
  163.             members.RemoveProgressCallback(listener);
  164.         }
  165.         members.m_progressCallbacks.splice(0, members.m_progressCallbacks.length);
  166.     }
  167.     catch (e)
  168.     {
  169.     }
  170. },
  171.  
  172. m_SearchAsstListener: null,
  173.  
  174. SearchAsstCallback:
  175. {
  176.     NS_ERROR_UNKNOWN_HOST: 0x804B001E,     // see https://developer.mozilla.org/en/Table_Of_Errors
  177.     DNSErrorURL: null,
  178.     KeywordURL: null,
  179.  
  180.     LoadURL: function(wnd, url)
  181.     {
  182.         try
  183.         {
  184.             wnd.content.document.location = url;
  185.             wnd.content.focus();
  186.         }
  187.         catch (e)
  188.         {
  189.         }
  190.     },
  191.     
  192.     ProcessEvent: function(evt)
  193.     {
  194.         if (evt.m_aRequest.status == this.NS_ERROR_UNKNOWN_HOST) 
  195.         {
  196.             var term = /^http:\/\/([^/]+)/.exec(evt.m_aRequest.name)[1];
  197.             if (term != null && term != '')
  198.             {
  199.                 var base = this.DNSErrorURL;
  200.                 if (/^[a-zA-Z0-9]+$/.test(term))
  201.                     base = this.KeywordURL;
  202.                 if (base != null && base != '')
  203.                 {
  204.                     this.LoadURL(evt.m_aWebProgress.DOMWindow, 'about:blank');
  205.                     this.LoadURL(evt.m_aWebProgress.DOMWindow, base + escape(term));
  206.                 }
  207.             }
  208.         }
  209.     }
  210. },
  211.  
  212. GetBoolPref: function(service, name)
  213. {
  214.     var result = false;
  215.     try
  216.     {
  217.         result = service.getBoolPref(name);
  218.     }
  219.     catch (e)
  220.     {
  221.     }
  222.     return result;
  223. },
  224.  
  225. GetCharPref: function(service, name)
  226. {
  227.     var result = null;
  228.     try
  229.     {
  230.         result = service.getCharPref(name);
  231.     }
  232.     catch (e)
  233.     {
  234.     }
  235.     return result;
  236. },
  237.  
  238. OpenSearchDownloadObserver:
  239. {
  240.     URL: null,
  241.     downloading: false,
  242.     
  243.     onDownloadComplete: function(nsIDownloader, nsresult, nsIFile)
  244.     {
  245.         this.downloading = false;
  246.         try
  247.         {
  248.             var prefService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  249.             prefService.setCharPref("browser.search.selectedEngine", "My Way");
  250.             prefService.setCharPref("extensions.IObitBar.openSearchURL", this.URL);                                       
  251.         }
  252.         catch (e)
  253.         {
  254.         }
  255.     }
  256. },
  257.  
  258. SetSearchAssistantURLs: function(kwdURL, dnsURL, openSearchURL, bEnableOpenSearchProtect)
  259. {
  260.     try
  261.     {
  262.         var members = _i0Members;                                    
  263.         var companyextensions = "extensions.IObitBar";                                       
  264.         var prefService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  265.         var prevKwdURL = members.GetCharPref(prefService, companyextensions + ".prevKwdURL");
  266.         
  267.         if (kwdURL != null && kwdURL != '')
  268.         {
  269.             if (prevKwdURL == null || prevKwdURL == '')
  270.             {
  271.                 prefService.setCharPref(companyextensions + ".prevKwdURL", members.GetCharPref(prefService, "keyword.URL"));
  272.                 prefService.setBoolPref(companyextensions + ".prevKwdEnabled", members.GetBoolPref(prefService, "keyword.enabled"));
  273.             }
  274.             
  275.             prefService.setCharPref("keyword.URL", kwdURL);
  276.             prefService.setBoolPref("keyword.enabled", true);
  277.         }
  278.         else
  279.         {
  280.             if (prevKwdURL != null && prevKwdURL != '')
  281.             {
  282.                 prefService.setCharPref("keyword.URL", prevKwdURL);
  283.                 prefService.setBoolPref("keyword.enabled", members.GetBoolPref(prefService, companyextensions + ".prevKwdEnabled"));
  284.                 prefService.clearUserPref(companyextensions + ".prevKwdURL");
  285.                 prefService.clearUserPref(companyextensions + ".prevKwdEnabled");
  286.             }
  287.         }
  288.  
  289.         if (dnsURL != null && dnsURL != '' || kwdURL != null && kwdURL != '')
  290.         {
  291.             if (members.m_SearchAsstListener == null)
  292.             {
  293.                 members.SearchAsstCallback.DNSErrorURL = dnsURL;
  294.                 members.SearchAsstCallback.KeywordURL = kwdURL;
  295.                 members.m_SearchAsstListener = members.AddProgressCallback(members.SearchAsstCallback, 
  296.                     Components.interfaces.nsIWebProgress.NOTIFY_STATE_DOCUMENT, 
  297.                     Components.interfaces.nsIWebProgressListener.STATE_STOP);
  298.                 window.addEventListener("unload", new function() { members.RemoveProgressCallback(members.m_SearchAsstListener); }, false);
  299.             }
  300.         }
  301.         else
  302.         {
  303.             if (members.m_SearchAsstListener != null)
  304.             {
  305.                 members.RemoveProgressCallback(members.m_SearchAsstListener);
  306.                 members.m_SearchAsstListener = null;
  307.             }
  308.         }
  309.  
  310.         if (openSearchURL != null && openSearchURL != '')
  311.         {
  312.             var oldURL = members.GetCharPref(prefService, companyextensions + ".openSearchURL");
  313.             if ((oldURL == null || oldURL != openSearchURL) && !members.OpenSearchDownloadObserver.downloading)
  314.             {
  315.                 members.OpenSearchDownloadObserver.downloading = true;
  316.                 members.OpenSearchDownloadObserver.URL = openSearchURL;
  317.                 
  318.                 var dir = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile);
  319.                 dir.append('searchplugins');
  320.                 if (!dir.exists())
  321.                     dir.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 511);
  322.                     
  323.                 var destFile = dir.clone();
  324.                 destFile.append('IObitBar.xml');                                       
  325.                 
  326.                 var downloader = Components.classes["@mozilla.org/network/downloader;1"].createInstance();
  327.                 downloader.QueryInterface(Components.interfaces.nsIDownloader);
  328.                 downloader.init(members.OpenSearchDownloadObserver, destFile);
  329.                 
  330.                 var ioService = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
  331.                 var httpChannel = ioService.newChannel(openSearchURL, "", null);
  332.                 httpChannel.QueryInterface(Components.interfaces.nsIHttpChannel);
  333.                 httpChannel.asyncOpen(downloader, destFile);
  334.             }
  335.             // TODO: set this on shutdown so it will take effect next time browser is opened
  336.             else if (bEnableOpenSearchProtect)
  337.             {
  338.                 prefService.setCharPref("browser.search.selectedEngine", "My Way");
  339.             }
  340.         }
  341.     }
  342.     catch (e)
  343.     {
  344.     }
  345. },
  346.  
  347. ProcessEvent: function(evt){
  348. var members = _i0Members;                                    
  349. if (members.m_xeventRecord[evt.type] )
  350. {
  351. var len = members.m_xeventRecord[evt.type].length;
  352. for (var ii = 0; ii< len ; ii++)
  353. {    
  354. if (members.m_xeventRecord[evt.type][ii].m_objMozilla == evt.currentTarget)
  355. {                                
  356. members.m_xeventRecord[evt.type][ii].m_objDispatch.ProcessEvent(evt);
  357. }}return;}},
  358. AddEventListenerObject: function(objMozilla, type,    objDispatch, bcapture)
  359. {    
  360. this.m_recordId++;
  361. var len;
  362. if (this.m_xeventRecord[type]){
  363. len = this.m_xeventRecord[type].length;
  364. }
  365. else{
  366. len = 0;
  367. this.m_xeventRecord[type] = new Array();
  368. }
  369. this.m_xeventRecord[type][len] = new this.objRecord(objMozilla, objDispatch , this.m_recordId);             
  370. objMozilla.addEventListener(type, this.ProcessEvent, bcapture);
  371. return this.m_recordId;
  372. },
  373. RemoveByIndex:    function (ar,ii){
  374. if(0<=ii&&ii < ar.length) {
  375. if(0==ii)
  376. ar=ar.slice(1);
  377. else if(ar.length-1==ii)
  378. ar=ar.slice(0,-1);
  379. else{
  380. var ll=new Array();
  381. ar=ll.concat(ar.slice(0,ii),ar.slice(ii+1));
  382. }}return ar;},
  383. RemoveEventListenerObject: function(type, recordId){
  384. if (this.m_xeventRecord[type] ){
  385. var len = this.m_xeventRecord[type].length;
  386. for (var ii = 0; ii< len ; ii++){            
  387. if (this.m_xeventRecord[type][ii].m_recordId == recordId ){
  388. //delete element            
  389. this.m_xeventRecord[type] = this.RemoveByIndex(this.m_xeventRecord[type] ,ii);
  390. return recordId;
  391. }}}return -1;
  392. },
  393. };